import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import Modal from '../Modal/index';
import './index.less';
class TantuterErrorMsg extends Component {
  constructor(props) {
    super(props);
    this.state = {
      msg: {}
    };
  }
  componentDidMount() {
    // this.getMsg();
  }
  getMsg = message => {
    let msg;
    try {
      msg = JSON.parse(message);
      this.setState({
        msg
      });
    } catch (e) {
      this.setState({
        msg: message
      });
    }
  };
  renderChildMsg = item => {
    if (!item) {
      return;
    }
    return (
      <div>
        {typeof item === 'string' && item}
        {typeof item === 'object' &&
          Object.keys(item).length > 0 &&
          Object.keys(item).map(it => {
            return (
              <div key={it}>
                {it}:{item[it]}
              </div>
            );
          })}
      </div>
    );
  };
  open = message => {
    this.getMsg(message);
    const { msg } = this.state;
    if (msg) {
      Modal.open({
        title: '服务端错误',
        content: this.renderMsg(),
        error: true,
        cancelTxt: '知道了',
        isOkBtn: false,
        isCancelBtn: false,
        width: 680
      });
    }
  };
  renderMsg = () => {
    const { msg } = this.state;
    const wpClass = typeof msg === 'string' ? 'msg-wp' : 'msg-error';
    return (
      <div className={wpClass}>
        {typeof msg === 'string' && msg}
        {typeof msg === 'object' &&
          Object.keys(msg).length > 0 &&
          Object.keys(msg).map(item =>
            !msg[item] ? null : (
              <div className="msg-item" key={item}>
                <div className="label">{item}</div>
                <div className="con">{this.renderChildMsg(msg[item])}</div>
              </div>
            )
          )}
      </div>
    );
  };
  render() {
    return <div />;
  }
}
let div = document.createElement('div');
document.body.appendChild(div);
let ErrorMsg = ReactDOM.render(React.createElement(TantuterErrorMsg), div);
export default ErrorMsg;
